Мы уже писали о новых возможностях VMware vSphere 5.1 - серверной платформы виртуализации, которая была анонсирована и выпущена на конференции VMowrld 2012. Вместе с выпуском обновленной версии продукта компания VMware внесла достаточно много изменений в издания и политики лицензирования продукта, так как почувствовала сильное давление со стороны основного конкурента - платформы Hyper-V в новой версии ОС Windows Server 2012 со множеством новых возможностей, по совокупности которых инфраструктура Microsoft почти не уступает VMware vSphere.
Итак, основные изменения в изданиях и лицензировании VMware vSphere 5.1:
Полная отмена лимитов по vRAM и числу ядер для лицензии на процессор. Напомним, что ранее (в vSphere 5.0) при превышении суммарного значения сконфигурированной оперативной памяти виртуальных машин (vRAM) для лицензии на процессор определенного издания, пользователи были вынуждены докупать еще лицензий, чтобы соответствовать условиям VMware. Эта политика и раньше вызывала очень много вопросов, так как демотивировала пользователей наращивать коэффициент консолидации виртуальных машин на хостах VMware ESXi (превышаешь порог по памяти для лицензии->платишь больше), что противоречит самой идее виртуализации. Теперь этих ограничений нет, единица лицензирования - физический процессор сервера, при этом не важно сколько в нем ядер и памяти у самого сервера. Мы писали об этом тут.
Во всех изданиях vSphere 5.1, начиная с Essentials Plus, появился виртуальный модуль vSphere Storage Appliance 5.1. Об этом продукте мы уже писали вот тут. Нужен он для создания общего хранилища под виртуальные машины, которое можно создать на базе локальных дисков серверов. Этот продукт обновился и теперь доступен для построения распределенной архитектуры кластеров хранилищ, управляемых через один vCenter.
Издание VMware vSphere 5.1 Standard приобрело множество возможностей. К ним относятся: механизм резервного копирования vSphere Data Protection (подробнее здесь), "горячее" добавление устройств виртуальной машины Hot Add, фреймворк антивирусной защиты vShield Endpoint, возможность репликации виртуальных машин vSphere Replication, кластеры непрерывной доступности vSphere Fault Tolerance и, главное, механизм "горячей" миграции хранилищ виртуальных машин vSphere Storage vMotion.
Издание VMware vSphere 5.1 Essentials Plus приобрело множество возможностей. К ним относятся: механизм резервного копирования vSphere Data Protection (подробнее здесь), фреймворк антивирусной защиты vShield Endpoint и возможность репликации виртуальных машин vSphere Replication.
Важный момент: пользователи vSphere 5.0 теперь не имеют ограничений по vRAM. То есть, изменения в лицензированию имеют обратную силу.
Издание VMware vSphere 5.1 Enterpise Plus позволяет иметь до 64 vCPU виртуальных машин.
Как и всегда, пользователи VMware vSphere 5.0 с действующей подпиской и поддержкой (SnS) обновляются на VMware vSphere 5.1 бесплатно.
Все издания продукта VMware vCenter (Essentials, Foudation и Standard) включают в себя следующие возможности:
Management service – централизованная консоль управления.
Database server – сервер БД.
Inventory service – сервис поиска по виртуальной инфраструктуре, в том числе с несколькими vCenter, а также средства кэширования запросов клиентов, что повышает производительность.
VMware vSphere Clients - "толстая" и "тонкая" консоли администрирования (Web Client теперь основной), позволяющие управлять несколькими vCenter одновременно.
VMware vCenter APIs and .NET Extension – интеграция vCenter со сторонними плагинами.
vCenter Single Sign-On – возможность единовременного логина на сервер без необходимости вводить учетные данные в различных сервисах управления виртуальной инфраструктурой.
Издание Standard, помимо возможности управления неограниченным количеством хост-серверов, предоставляет следующие возможности:
vCenter Orchestrator – средство автоматизации рабочих процессов в виртуальной инфраструктуре.
vCenter Server Linked Mode – общее окружение для нескольких серверов vCenter Server.
На конференции VMworld 2012 компания VMware анонсировала выпуск новой версии серверной платформы виртуализации VMware vSphere 5.1. В обновленной версии продукта появилось множество интересных возможностей, отражающих движение компании VMware в направлении развития облачных вычислений. В этой статье мы приведем полный список новой функциональности VMware vSphere 5.1, которая доступна пользователям уже сегодня...
Если в VMware vSphere Client вы зайдете на вкладку "Configuration", далее в разделе "Hardware" выберете пункт "Power Management", то увидите вот такую картинку:
Это настройки управления питанием хост-сервера VMware ESXi. Они задают политики управления питанием на основе открытого стандарта Advanced Configuration and Power Interface (ACPI), который определяет схему электропотребления на основе состояний процессора: Power Performance States (P-states) и Processor idle sleep states (C-states).
Режимы P-states — это комбинации напряжений и частот работы ядра процессора для различных типов нагрузок на CPU. Правильно выставленная пара «напряжение—частота» позволяет определить необходимую производительность для выполнения текущих задач CPU, что позволет снизить его энергопотребление и тепловыделение. Состояния P-states являются подмножеством рабочего C-state состояния C0.
Режимы C-states — это состояния, в которых процессор находится в различной ситуации относительно его простоя. Например, C1 (Halt) - состояние, когда процессор не исполняет инструкции, но готов мгновенно (с задержкой примерно 10нс) приступить к их исполнению, C2 (Stop-Clock) - состояние, в котором процессор по-прежнему поддерживает актуальное внутреннее состояние, но просыпается большее (до 100нс) время, при этом дополнительно отключены буферы ввода-вывода. C3 (Sleep) - состояние, в котором процессор отключает питание кэшей второго уровня, но сохраняет прочую служебную информацию. Время пробуждения может составлять до 50 мкс. В современных процессорах есть также множество дополнительных состояний, например, C1E с меньшим энергопотреблением и C6 - когда рабочее напряжение на процессоре может быть понижено до нуля.
Теперь, что мы увидим если нажмем на ссылку "Properties" для Power Management Settings:
Вот что значат эти политики:
High performance - данная политика максимизирует производительность процессора за счет его поддержки в наивысшем P-state состоянии все время (то есть, по-сути политика энергосбережения отключена). При этом используются только 2 C-state состояния: С0 (running) и C1 (halted). Соответственно, данный режим выдает максимальную производительность, не имеет инерционности и потребляет больше всего энергии. Эта политика выставлена по умолчанию для VMware ESX/ESXi 4.0 и 4.1.
Balanced - эта политика разработана для того, чтобы максимально использовать переключения между P-states в целях экономии энергии. Она обладает слегка большей инерционностью, но почти не влияет на производительность. Эта политика выставлена по умолчанию для VMware ESXi 5.0.
Low Power - эта политика придумана для максимального энергосбережения, а значит имеет риски по потере хостом ESXi производительности CPU. Она активно использует состояния C-states при различных видах простоя процессора.
Custom - по умолчанию эта политика работает как Balanced, но позволяет настроить различные параметры пользователю. Если оборудование хоста не позволяет операционной системе самостоятельно управлять энергопотреблением, то для этой политики будут доступны только варианты Not Supported или High performance.
Определять политики вручную необходимо только тогда, когда вы точно знаете, что с ними делать. Вот, например, табличка, описывающая custom-параметры политики:
Недавно мы уже писали о том, как работает технология балансировки нагрузки на хранилища VMware Storage DRS (там же и про Profile Driven Storage). Сегодня мы посмотрим на то, как эта технология работает совместно с различными фичами дисковых массиов, а также функциями самой VMware vSphere и других продуктов VMware.
Для начала приведем простую таблицу, из которой понятно, что поддерживается, а что нет, совместно с SDRS:
Возможность
Поддерживается или нет
Рекомендации VMware по режиму работы SDRS
Снапшоты на уровне массива (array-based snapshots)
Поддерживается
Ручное применение рекомендаций (Manual Mode)
Дедупликация на уровне массива (array-based deduplication)
Поддерживается
Ручное применение рекомендаций (Manual Mode)
Использование "тонких" дисков на уровне массива (array-based thin provisioning)
Поддерживается
Ручное применение рекомендаций (Manual Mode)
Использование функций автоматического ярусного хранения (array-based auto-tiering)
Поддерживается
Ручное применение рекомендаций (Manual Mode), только для распределения по заполненности хранилищ (auto-tiering по распределению нагрузки сам решит, что делать)
Репликация на уровне массива (array-based replication)
Автоматическое применение рекомендаций (Fully Automated Mode)
Технология репликации на уровне хоста (VMware vSphere Replication)
Не поддерживается
-----
Снапшоты виртуальных машин (VMware vSphere Snapshots)
Поддерживается
Автоматическое применение рекомендаций (Fully Automated Mode)
Использование "тонких" дисков на уровне виртуальных хранилищ (VMware vSphere Thin Provisioning)
Поддерживается
Автоматическое применение рекомендаций (Fully Automated Mode)
Технология связанных клонов (VMware vSphere Linked Clones)
Не поддерживается
-----
"Растянутый" кластер (VMware vSphere Storage Metro Cluster)
Поддерживается
Ручное применение рекомендаций (Manual Mode)
Хосты с версией ПО, младше чем vSphere 5.0
Не поддерживается
-----
Использование совместно с продуктом VMware vSphere Site Recovery Manager
Не поддерживается
-----
Использование совместно с продуктом VMware vCloud Director
Не поддерживается
-----
Комментарии к таблице:
Снапшоты на уровне массива - они никак не влияют на работу механизма SDRS, однако рекомендуется оставить его в ручном режиме, чтобы избежать возможных проблем при одновременном создании снапшота и перемещении виртуальных дисков.
Дедупликация на уровне массива - полностью совместима со механизмом SDRS, однако рекомендуется ручной режим, так как, с точки зрения дедупликации, наиболее эффективно сначала применить рекомендации по миграции виртуальных дисков, а потом уже использовать дедупликацию (для большинства сценариев).
Использование array-based auto-tiering - очевидно, что функции анализа производительности в дисковом массиве и перемещения данных по ярусам с различными характеристиками могут вступить вступить в конфликт с алгоритмами определения нагрузки в SDRS и перемещения vmdk-дисков по хранилищам на логическом уровне. Сам Storage DRS вступает в действие после 16 часов анализа нагрузки и генерирует рекомендации каждые 8 часов, в дисковом же массиве механизм перераспределения блоков по ярусам может работать по-разному: от real-time процесса в High-end массивах, до распределения каждые 24 часа в недорогих массивах. Понятно, что массиву лучше знать, какие блоки куда перемещать с точки зрения производительности физических устройств, поэтому для SDRS рекомендуется оставить выравнивание хранилищ только по заполненности томов VMFS, с отключенной I/O Metric.
Репликация на уровне массива - полностью поддерживается со стороны SDRS, однако, в зависимости от использования метода репликации, во время применения рекомендаций SDRS виртуальные машины могут остаться в незащищенном состоянии. Поэтому рекомендуется применять эти рекомендации SDRS во время запланированного окна обслуживания хранилищ.
VMware vSphere Storage Metro Cluster - здесь нужно избегать ситуации, когда виртуальный диск vmdk машины может уехать на другой сайт по отношению к хосту ESXi, который ее исполняет (когда используется общий Datastore Cluster хранилищ). Поэтому, а еще и потому, что распределенные кластеры могут строиться на базе технологий синхронной репликации хранилищ (см. предыдущий пункт), нужно использовать ручное применение рекомендаций SDRS.
Поддержка VMware vSphere Site Recovery Manager - на данный момент SDRS не обнаруживает Datastore Groups в SRM, а SRM не отслеживает миграции SDRS по хранилищам. Соответственно, при миграции ВМ на другое хранилище не обновляются protection groups в SRM, как следствие - виртуальные машины оказываются незащищенными. Поэтому совместное использование этих продуктов не поддерживается со стороны VMware.
Поддержка томов RDM - SDRS полностью поддерживает тома RDM, однако эта поддержка совершенно ничего не дает, так как в миграциях может участвовать только vmdk pointer, то есть прокси-файл виртуального диска, который занимает мало места (нет смысла балансировать по заполненности) и не генерирует никаких I/O на хранилище, где он лежит (нет смысла балансировать по I/O). Соответственно понадобиться эта поддержка может лишь на время перевода Datastore, где лежит этот файл-указатель, в режим обслуживания.
Поддержка VMware vSphere Replication - SDRS не поддерживается в комбинации с хостовой репликацией vSphere. Это потому, что файлы *.psf, используемые для нужд репликации, не поддерживаются, а даже удаляются при миграции ВМ на другое хранилище. Вследствие этого, механизм репликации для смигрированной машины считает, что она нуждается в полной синхронизации, что вызывает ситуацию, когда репликация будет отложена, а значит существенно ухудшатся показатели RTO/RPO. Поэтому (пока) совместное использование этих функций не поддерживается.
Поддержка VMware vSphere Snapshots - SDRS полностью поддерживает спапшоты виртуальных машин. При этом, по умолчанию, все снапшоты и виртуальные диски машины при применении рекомендаций перемещаются на другое хранилище полностью (см. левую часть картинки). Если же для дисков ВМ настроено anti-affinity rule, то они разъезжаются по разным хранилищам, однако снапшоты едут вместе со своим родительским диском (см. правую часть картинки).
Использование тонких дисков VMware vSphere - полностью поддерживается SDRS, при этом учитывается реально потребляемое дисковое пространство, а не заданный в конфигурации ВМ объем виртуального диска. Также SDRS учитывает и темпы роста тонкого виртуального диска - если он в течение последующих 30 часов может заполнить хранилище до порогового значения, то такая рекомендация показана и применена не будет.
Технология Linked Clones - не поддерживается со стороны SDRS, так как этот механизм не отслеживает взаимосвязи между дисками родительской и дочерних машин, а при их перемещении между хранилищами - они будут разорваны. Это же значит, что SDRS не поддерживается совместно с продуктом VMware View.
Использование с VMware vCloud Director - пока не поддерживается из-за проблем с размещением объектов vApp в кластере хранилищ.
Хосты с версией ПО, младше чем vSphere 5.0 - если один из таких хостов поключен к тому VMFS, то для него SDRS работать не будет. Причина очевидна - хосты до ESXi 5.0 не знали о том, что будет такая функция как SDRS.
Не так давно мы писали про проект Boomerang, который доступен на сайте VMware Labs. Это утилита, которая размещается в трее и с помощью которой можно получать быстрый доступ к консоли виртуальных машин (через VMware Remote Console, VMRC) и управлению питанием. Машины можно помечать звездочками, чтобы выделить их в списке Favorites. К сожалению, Boomerang не работает для бесплатного VMware ESXi (см. комментарии), но поддерживает одновременное подключение к нескольким хост-серверам в платной версии.
На днях произошло обновление продукта до версии Boomerang 2.0.
Среди новых возможностей VMware Boomerang 2.0:
Поддержка нескольких серверов View Connection Server одновременно и их виртуальных машин.
При установке продукта поддержку VMware vSphere или VMware View можно опционально отключить.
Сортировка серверов в алфавитном порядке.
Если включен поиск ВМ, то список ВМ серверов автоматически раскрывается.
Напомним основные возможности продукта VMware Boomerang:
Поддержка соединения к нескольким серверам ESX/ESXi и нескольким серверам vCenter одновременно.
Поддержка соединения к нескольким серверам View Connection Server одновременно.
Соединение с десктопами VMware View по протоколу PCoIP или RDP.
Автоматическое перенаправление клиентских принтеров в десктопы View через ThinPrint.
Сохранение логина и пароля для входа на серверы.
Панель Favorites для удобства просмотра машин на нескольких серверах.
Удобная панель управления питанием ВМ.
Поиск машины в списке происходит набором ее имени на клавиатуре.
Серверы с большим количеством ВМ автоматически сворачиваются в гиперссылки, которые можно развернуть.
Автоматический поиск обновлений для утилиты.
Секция Recently Used, показывающая машины, с которыми были последние соединения.
Быстрый поиск ВМ по всем серверам.
Скачать VMware Boomerang 2.0 можно по этой ссылке (всего 12 МБ).
Как оказалось у нас на сайте нет инструкции по подключению локальных дисков сервера VMware ESXi в качестве RDM-дисков для виртуальных машин. Восполняем этот пробел. Как известно, если вы попытаетесь добавить локальный диск сервере ESXi в качестве RDM-тома для ВМ, вы там его не увидите:
Связано это с тем, что VMware не хочет заморачиваться с поддержкой дисков различных производителей, где будут размещены производственные виртуальные машины. Поэтому нам нужно создать маппинг-файл VMDK на локальное дисковое устройство, который уже как диск (pRDM или vRDM) подключить к виртуальной машине.
Для начала найдем имя устройства локального SATA-диска в списке устройств ESXi. Для этого перейдем в соответствующую директорию командой:
# cd /dev/disks
И просмотрим имеющиеся диски:
# ls -l
Нас интересуют те диски, что выделены красным, где вам необходимо найти свой и скопировать его имя, вроде t10.ATA___....__WD2DWCAVU0477582.
Далее переходим в папку с виртуальной машиной, которой мы хотим подцепить диск, например:
# cd /vmfs/volumes/datastore1/<vm name>
И создаем там маппинг VMDK-диск для создания RDM-тома, при этом можно выбрать один из режимов совместимости:
После того, как vmdk mapping file создан, можно цеплять этот диск к виртуальной машине через Add Virtual Disk (лучше использовать для него отдельный SCSI Controller):
Второй способ, который работает не для всех дисков - это отключение фильтра на RDM-диски (это можно сделать и на сервере VMware vCenter). Для этого в vSphere Client для хоста ESXi нужно пойти сюда:
Однако, повторимся, этот метод (в отличие от первого) работает не всегда. Ну и учитывайте, что подобная конфигурация не поддерживается со стороны VMware, хотя и работает.
Мы уже писали о том, что такое и как работает технология VMware vStorage API for Array Integration (VAAI) (а также немного тут), которая позволяет передать операции по работе с хранилищами, которые выполняет компонент Data Mover в VMkernel, на сторону дискового массива. Это существенно улучшает показатели производительности различных операций (клонирования и развертывания ВМ, использования блокировок) за счет того, что они выполняются самим массивом, без задействования сервера VMware ESXi:
Если ваш массив не поддерживает примитивы VAAI, то чтобы склонировать виртуальный диск VMDK размером 64 ГБ, компонент Data Mover реализует эту операцию следующим образом:
Разделяет диск 64 ГБ на малые порции размером в 32 МБ.
Эту порцию 32 МБ Data Mover разделяет еще на маленькие операции ввода-вывода (I/O) размером в 64 КБ, которые идут в 32 параллельных потока одновремнно.
Соответственно, чтобы передать 32 МБ, Data Mover выполняет 512 операций ввода вывода (I/Os) по 64 КБ.
Если же массив поддерживает примитив XCOPY (он же Hardware Offloaded Copy и SAN Data Copy Offloading), то для передачи тех же 32 МБ будут использованы I/O размером в 4 МБ, а таких I/O будет, соответственно, всего 8 штук - разница очевидна.
Интересно, как работает VAAI с точки зрения ошибок при передаче данных: например, мы делаем клонирование ВМ на массиве с поддержкой VAAI, и вдруг возникает какая-то ошибка. В этом случае VMkernel Data Mover подхватывает операцию клонирования с того места, где VAAI вызвал ошибку, и производит "доклонирование" виртуальной машины. Далее ESXi периодически будет пробовать снова использовать VAAI на случай, если это была кратковременная ошибка массива.
При этом проверки в разных версиях ESXi будут производиться по-разному:
Для ESX/ESXi 4.1 проверка будет производиться каждые 512 ГБ передаваемых данных. Посмотреть этот параметр можно следующей командой:
# esxcfg-advcfg -g /DataMover/HardwareAcceleratedMoveFrequency Value of HardwareAcceleratedMoveFrequency is 16384
Это значение частоты 16384 нужно умножить на порцию 32 МБ и мы получим 512 ГБ. Чтобы поменять эту частоту, можно использовать команду:
Для ESXi 5.0 и выше все проще - проверка производится каждые 5 минут.
Помимо описанных в нашей статье примитивов Full Copy, Zero Block и ATS, начиная с версии ESXi 5.0, поддерживаются еще 2 примитива:
Thin Provisioning - механизм сообщения хостом ESXi дисковому массиву о том, что виртуальная машина или ее файлы с Thin LUN были удалены или перемещены (в силу разных причин - Storage vMotion, консолидация снапшотов и так далее), поэтому массив может забрать это дисковое пространство себе назад.
С точки зрения дисковых массивов, работающих на NFS (прежде всего, NetApp) в ESXi 5.0 также появилась поддержка примитивов VAAI:
Full File Clone – аналог функций Full Copy для VAAI на блочных хранилищах, предназначен для клонирования файлов виртуальных дисков VMDK.
Native Snapshot Support – передача на сторону массива функций создания снапшота ВМ.
Extended Statistics – включает возможность просмотра информации об использовании дискового пространства на NAS-хранилище, что полезно для Thin Provisioning.
Reserve Space – включает возможность создания виртуальных дисков типа "thick" (фиксированного размера) на NAS-хранилищах (ранее поддерживались только Thin-диски).
Функции VAAI включены по умолчанию и будут использованы тогда, когда станут доступны (например, при обновлении Firmware дискового массива, которое поддерживает VAAI).
Таги: VMware, vSphere, VAAI, Storage, ESXi, Enterprise, SAN
Мы уже много писали о продукте vGate R2 - средстве номер 1 для защиты виртуальной инфраструктуры VMware vSphere, которое полностью поддерживает пятую версию этой платформы, имеет сертификаты ФСТЭК и предназначено для безопасной настройки хост-серверов и ВМ средствами политик, а также защиты от НСД. В прошлых статьях мы рассказывали о защите облачных инфраструктур сервис-провайдеров от внутренних и внешних угроз. Сегодня мы постараемся обобщить угрозы, существующие в виртуальной среде, и предложить средства защиты на базе продукта vGate R2 и других решений от компании Код Безопасности.
Достаточно давно мы уже описывали средство централизованного администрирования хост-серверами VMware vSphere - vSphere Management Assistant (vMA). По сути, vMA - это вынесенная "сервисная консоль" за пределы хост-серверов ESXi в отдельный виртуальный модуль (Virtual Appliance), с которого удобно выполнять консольные команды RCLI (например, мониторинга - resxtop), а также хранить и запускать различные скрипты. Сегодня мы расскажем о том, как восстновить (сбросить) пароль на виртуальном модуле vMA.
Итак, загружаем VMware vMA 5, устанавливаем выбор на пункте меню "SUSE Linux Enterprise Server 11 SP1 for VMware" и нажимаем кнопку <e>:
В появившемся далее экране выбираем строчку с "kernel /vmlinuz" и снова нажимаем <e>:
В следующем экране, в строке ввода, вбиваем init=/bin/bash:
После нажатия <Enter>, вы вернетесь в педыдущее окно, где нужно нажать <b> для загрузки vMA. После загрузки вводим команду, которой и устанавливаем новый пароль:
# passwd vi-admin
Пароль установить непросто. Он должен соответствовать следующим политикам:
Не менее 8 символовEight characters
Хотя бы один символ в верхнем регистре
Хотя бы один - в нижнем
Хотя бы одна цифра
Хотя бы один спецсимвол (#, $ и т.п.)
Понятно, что такой пароль никому не удобен. Поменять его можно командой:
С покупкой VMware компании Nicira стало больше разговоров о технологии VXLAN (Virtual eXtensible LAN), которая предоставляет расширенный механизм создания виртуальных сетей VLAN в крупных ИТ-инфраструктурах, объединяющих несколько датацентров компании (о ней мы уже упоминали). Разумеется, она нацелена на виртуализацию, и ее поддержка будет включена в платформу VMware vSphere в недалеком будущем. То есть VXLAN - это замена VLAN для создания прозрачной мобильной сетевой среды для виртуальных машин, имеющих возможность перемещаться между датацентрами.
Суть имеющейся сегодня проблемы заключается в том, что IP-адрес системы определяет две, по-сути разные, сущности: идентификатор системы и указатель на географическое размещение в сети (датацентр, сегмент), кроме того стандартная концепция VLAN позволяет использовать только до 4096 виртуальных сетей для логической изоляции классов систем, что в крупных инфраструктурах иногда оказывается недостаточно (особенно это касается IaaS-инфраструктур сервис-провайдеров, работающих с сотнями организаций, у каждой из которых свои VLAN).
Поэтому компании Cisco и VMware, к которым присоединились Citrix и Red Hat, разработали стандарт VXLAN, позволяющий организовать логические сети L2 поверх уровня L3 с возможностью минимального внесения изменений в существующую инфраструктуру сетевого взаимодействия в организациях. На данный момент черновик стандарта VXLAN в реализации IPv4 отправлен в организацию IETF, вскоре там будет и документ по реализации в IPv6.
Обзорный ролик по технологии VXLAN:
Образно говоря, технология VXLAN - это способ создания новых логических L2-сетей в рамках уже существующих L3-сетей. В одной VXLAN-сети виртуальная машина уникально идентифицируется двумя следующими параметрами:
VXLAN Network Identifier (VNI) - 24-битный идентификатор виртуальной сети, а значит их всего может быть более 16 миллионов штук
MAC-адрес машины
Соответственно, в одной VXLAN-сети не может быть машин с одинаковым MAC-адресом, но в разных VXLAN-сетях они вполне могут существовать (что актуально для виртуальных машин, MAC которых генерируется автоматически и глобально не уникален). Большое количество возможных VXLAN-сетей позволяет виртуальным машинам "путешествовать" между инфраструктурой организации и сторонними сервис-провайдерами без изменения сетевой идентификации, сохранением политик и изоляции внутри виртуальной сети безотносительно ее физического размещения (у себя или у IaaS-провайдера).
Для работы инфраструктуры VXLAN есть следующие компоненты:
Необходима поддержка режимов Multicast, IGMP и PIM
Идентификатор VNI внутри IP-пакета, только машины с одинаковым VNI могут взаимодействовать между собой
Шлюз VXLAN Gateway
Компонент VXLAN Tunnel End Point (VTEP) на стороне сервера виртуализации
Виртуальная сеть VXLAN Segment/VXLAN Overlay
С точки зрения IP-пакета VXLAN, в сети IPv4 его размер увеличивается на 50 байт, а в сети IPv6 - на 70 байт. Работает это примерно так:
Допустим у нас есть виртуальная сеть VXLAN с VNI равным 864. Когда виртуальная машина VM1 хочет послать IP-пакет виртуальной машине VM2 происходят следующие вещи:
VM1 по протоколу ARP посылает пакет с запросом MAC-адреса VM2
Компонент VTEP1, размещенный на первом сервере VMware ESXi, инкапсулирует этот ARP-пакет в мультикаст-пакет, ассоциированный с виртуальной сетью с VNI 864
Все остальные VTEP, получающие этот пакет, добавляют ассоциацию VTEP1 и VM1 в свои VXLAN-таблицы
VTEP2 получает пакет, декапсулирует его и посылает броадкаст на портгруппы виртуальных коммутаторов, которым присвоен VXLAN c VNI 864
VM2, находящаяся в одной из этих портгрупп, получает ARP-пакет и отвечает своим MAC-адресом
VTEP2 на втором хосте ESXi формирует юникастовый пакет и отправляет его уже по существующему маршруту
VTEP1 декапсулирует пакет и передает его виртуальной машине VM1
Теперь обратимся к структуре VXLAN-пакета:
В нем есть следующие заголовки (слева-направо):
Outer MAC Header (Ethernet Header)
Он содержит следующие поля:
Destination Address - это MAC-адрес VTEP назначения, если этот VTEP является локальным по отношению к ближайшему роутеру, или MAC-адрес самого роутера, если VTEP находится за ним
VLAN - опциональное поле с тэгом VLAN (не обязательно в VXLAN-реализации)
Ethertype - тип пакета (для IPv4 установлен в 0×0800
Outer IP Header
Protocol - содержит значение 0×11, чтобы обозначить, что это UDP-пакет
Source IP - IP-адрес VTEP источника
Destination IP - IP-адрес VTEP назначения
UDP Header
Source Port - устанавливается передающим VTEP
VXLAN Port - порт VXLAN IANA (еще не определен)
UDP Checksum - контрольная сумма пакета на уровне VXLAN
VXLAN Header
VXLAN Flags - различные флаги
VNI - 24-битное поле с идентификатором VXLAN
Reserved - набор зарезервированных полей
Итак, VM1 по описанному выше алгоритму узнала MAC-адрес VM2, после чего начинает ей адресно слать пакеты примерно так:
VM1 посылает IP-пакет к VM2 с адреса 192.168.0.100 на адрес 192.168.0.101
VTEP1 берет пакет и инкапсулирует его, добавляя следующие заголовки:
VXLAN header с идентификатором VNI=864
Стандартный UDP-заголовок с назначенным портом (VXLAN IANA)
Стандартный IP-заголовок с IP-адресом VTEP назначения и признаком UDP-пакета
Стандартный MAC-заголовок с MAC-адресом следующего устройства (next hop). В данном случае это роутер с маком 00:10:11:FE:D8:D2, который будет использовать стандартную маршрутизацию пакета по IP-сети до VTEP2.
Далее VTEP2 получает такой пакет, распаковывает его (он узнает, что это VXLAN, так как это UDP-пакет) и вытаскивает VNI (864). Далее уже очищенный от обертки IP-пакет направляется к VM2, которая находится в портгруппе с VNI 864, перед чем VTEP убеждается, что она может получить пакет
Виртуальная машина VM2 получает IP-пакет очищенным, как обычный IP-пакет
Таким образом, технология VXLAN, поддерживаемая в программном обеспечении платформы виртализации и роутеров позволит расширить сферу применения виртуальных сетей VXLAN в виртуальных облачных средах, где виртуальная машина сможет существовать в различных географически разделенных датацентрах, а пользователи смогут распределять нагрузку между своим частным облаком и облаком сервис-провайдера, не прибегая к переконфигурации виртуальных машин в рамках их виртуальных сетей.
Что еще можно почитать на эту тему (источники данной статьи):
Kenny сделал хорошую запись о списке дефолтных аккаунтов для различных продуктов VMware, а мы сведем это в таблицу для вашего удобства, добавив парочку отсутствующих продуктов:
Название продукта
Веб-адрес или консоль для доступа
Логин (username)
Пароль (password)
VMware vSphere Data Recovery
http://<имя или IP>:5480
root
vmw@re
VMware vSphere Storage Appliance
VSA Manager
svaadmin
svapass
VMware View Administrator
http://<имя или IP>/admin
Администратор Windows
Администратор Windows
VMware Site Recovery Manager
Консоль SRM
Администратор vCenter
Администратор vCenter
VMware vCloud Director
http://<имя или IP>/cloud
administrator
Указывается при установке
VMware vCloud Director Appliance
Direct Console
root
Default0
vCloud Director ApplianceOracleXEDatabase
БД
vcloud
VCloud
VMware vSphere Management Assistant
Direct Console
vi-admin
Задается после логина
VMware vCloud Connector Server
http://<имя или IP>:5480
admin
vmware
VMware vCloud Connector Node
http://<имя или IP>:5480
admin
vmware
VMware vCenter Chargeback
http://<имя или IP>:8080/cbmui
root
vmware
VMware Horizon Application Manager
http://<имя или IP>, http://<имя или IP>/SAAS/login/0
Мы уже писали про средства доверенной загрузки, которые нужно использовать в виртуальной инфраструктуре VMware vSphere 5, чтобы нейтрализовать угрозы, свзанные с доверенной загрузкой, и соответствовать требованиям руководящих документов ФСТЭК. Напомним, что когда дело касается виртуальных машин, организовать их доверенную загрузку можно с помощью сертифицированного средства защиты vGate R2 от компании Код Безопасности, в котором есть множество наборов политик, которые можно применять к различным объектам виртуальной инфраструктуры:
Однако надо помнить, что нужно защищать также и сами хост-серверы ESXi, находящиеся в датацентре компании. Для эффективной защиты сервера виртуализации, помимо vGate R2, необходим электронный замок - ПАК «Соболь» версии 3.0 для реализации следующих защитных механизмов:
идентификация и аутентификация пользователей на входе в систему (непосредственно при запуске сервера);
ведение журнала безопасности;
сигнализация попыток нарушения защиты;
запрет загрузки с внешних носителей;
контроль конфигурации (PCI-устройств, ACPI, SMBIOS и оперативной памяти).
Применение обоих средств защиты информации – ПАК «Соболь» версии 3.0 и vGate R2 – в комплексе позволяет защитить сервер с установленной платформой для виртуализации VMware vSphere 5 и нейтрализовать угрозы непосредственного доступа (угрозы, реализуемые до загрузки ОС, и угрозы, реализуемые после загрузки ОС).
Наличие у продуктов сертификатов ФСТЭК России позволяет использовать vGate R2 и ПАК «Соболь» версии 3.0 для защиты информации, составляющей коммерческую или государственную тайну в автоматизированных системах с классом защищенности до 1Б включительно.
Напомним, что версия vGate R2 с поддержкой vSphere 5 уже поступила в продажу, а бесплатную пробную версию продукта можно скачать тут.
Если мы запустим утилиту esxtop, то увидим следующие столбцы (интересующее нас выделено красным):
Нас интересует 5 счетчиков, касающиеся процессоров виртуальных машин, с помощью которых мы сможем сделать выводы об их производительности. Рассмотрим их подробнее:
Счетчик %RUN
Этот счетчик отображает процент времени, в течение которого виртуальная машина исполнялась в системе. Когда этот счетчик для ВМ около нуля или принимает небольшие значение - то с производительностью процессора все в порядке (при большом его значении для idle). Однако бывает так, что он небольшой, а виртуальная машина тормозит. Это значит, что она заблокирована планировщиком ESXi или ей не выделяется процессорного времени в связи с острой нехваткой процессорных ресурсов на сервере ESXi. В этом случае надо смотреть на другие счетчики (%WAIT, %RDY и %CSTP).
Если значение данного счетчика равно <Число vCPU машины> x 100%, это значит, что в гостевой ОС виртуальной машины процессы загрузили все доступные процессорные ресурсы ее vCPU. То есть необходимо зайти внутрь ВМ и исследовать проблему.
Счетчики %WAIT и %VMWAIT
Счетчик %WAIT отображает процент времени, которое виртуальная машина ждала, пока ядро ESXi (VMkernel) выполняло какие-то операции, перед тем, как она смогла продолжить выполнение операций. Если значение этого счетчика значительно больше значений %RUN, %RDY и %CSTP, это значит, что виртуальная машина дожидается окончания какой-то операции в VMkernel, например, ввода-вывода с хранилищем. В этом случае значение счетчика %SYS, показывающего загрузку системных ресурсов хоста ESXi, будет значительно выше значения %RUN.
Когда вы видите высокое значение данного счетчика, это значит, что нужно посмотреть на производительность хранилища виртуальной машины, а также на остальные периферийные устройства виртуального "железа". Зачастую, примонтированный ISO-образ, которого больше нет на хранилище, вызывает высокое значение счетчика. Это же касается примонтированных USB-флешек и других устройств ВМ.
Не надо пугаться высокого значения %WAIT, так как оно включает в себя счетчик %IDLE, который отображает простой виртуальной машины. А вот значение счетчика %VMWAIT - уже более реальная метрика, так как не включает в себя %IDLE, но включает счетчик %SWPWT (виртуальная машина ждет, пока засвопированные таблицы будут прочитаны с диска; возможная причина - memory overcommitment). Таким образом, нужно обращать внимание на счетчик %VMWAIT. К тому же, счетчик %WAIT представляет собой сумму метрик различных сущностей процесса виртуальной машины:
Счетчик %RDY
Главный счетчик производительности процессора. Означает, что виртуальная машина (гостевая ОС) готова исполнять команды на процессоре (ready to run), но ожидает в очереди, пока процессоры сервера ESXi заняты другой задачей (например, другой ВМ). Является суммой значений %RDY для всех отдельных виртуальных процессоров ВМ (vCPU). Обращать внимание на него надо, когда он превышает пороговое значение 10%.
По сути, есть две причины, по которым данный счетчик может зашкаливать приведенное пороговое значение:
сильная нагрузка на физические процессоры из-за большого количества виртуальных машин и нагрузок в них (здесь просто надо уменьшать нагрузку)
большое количество vCPU у конкретной машины. Ведь виртуальные процессоры машин на VMware ESX работают так: если у виртуальной машины 4 vCPU, а на хосте всего 2 физических pCPU, то одна распараллеленная операция (средствами ОС) будет исполняться за в два раза дольший срок. Естественно, 4 и более vCPU для виртуальной машины может привести к существенным задержкам в гостевой ОС и высокому значению CPU Ready. Кроме того, в некоторых случаях нужен co-sheduling нескольких виртуальных vCPU (см. комментарии к статье), когда должны быть свободны столько же pCPU, это, соответственно, тоже вызывает задержки (с каждым vCPU ассоциирован pCPU). В этом случае необходимо смотреть значение счетчика %CSTP
Кроме того, значение счетчика %RDY может быть высоким при установленном значении CPU Limit в настройках виртуальной машины или пула ресурсов (в этом случае посмотрите счетчик %MLMTD, который при значении больше 0, скорее всего, говорит о достижении лимита). Также посмотрите вот этот документ VMware.
Счетчик %CSTP
Этот счетчик отображает процент времени, когда виртуальная машина готова исполнять команды, одна вынуждена ждать освобождения нескольких vCPU при использовании vSMP для одновременного исполнения операций. Например, когда на хосте ESXi много виртуальных машин с четырьмя vCPU, а на самом хосте всего 4 pCPU могут возникать такие ситуации с простоем виртуальных машин для ожидания освобождения процессоров. В этом случае надо либо перенести машины на другие хосты ESXi, либо уменьшить у них число vCPU.
В итоге мы получаем следующую формулу (она верна для одного из World ID одной виртуальной машины)
%WAIT + %RDY + %CSTP + %RUN = 100%
То есть, виртуальная машина либо простаивает и ждет сервер ESXi (%WAIT), либо готова исполнять команды, но процессор занят (%RDY), либо ожидает освобождения нескольких процессоров одновременно (%CSTP), либо, собственно, исполняется (%RUN).
Таги: VMware, vSphere, esxtop, ESXi, VMachines, Performance, CPU
Если речь идет о виртуальных машинах на сервере VMware ESXi, работающих с дисковым массивом, можно выделить 5 видов очередей:
GQLEN (Guest Queue) - этот вид очередей включает в себя различные очереди, существующие на уровне гостевой ОС. К нему можно отнести очереди конкретного приложения, очереди драйверов дисковых устройств в гостевой ОС и т.п.
WQLEN (World Queue/ Per VM Queue) - это очередь, существующая для экземпляра виртуальной машины (с соответствующим World ID), которая ограничивает единовременное число операций ввода-вывода (IOs), передаваемое ей.
AQLEN (Adapter Queue) - очередь, ограничивающая одновременное количество обрабатываемых на одном HBA-адаптере хоста ESXi команд ввода вывода.
DQLEN (Device Queue / Per LUN Queue) - это очередь, ограничивающая максимальное количество операций ввода-вывода от хоста ESXi к одному LUN (Datastore).
Эти очереди можно выстроить в иерархию, которая отражает, на каком уровне они вступают в действие:
Очереди GQLEN бывают разные и не относятся к стеку виртуализации VMware ESXi, поэтому мы рассматривать их не будем. Очереди SQLEN мы уже частично касались тут и тут. Если до SP дискового массива со стороны сервера ESX / ESXi используется один активный путь, то глубина очереди целевого порта массива (SQLEN) должна удовлетворять следующему соотношению:
SQLEN>= Q*L
где Q - это глубина очереди на HBA-адаптере, а L - число LUN, обслуживаемых SP системы хранения. Если у нас несколько активных путей к одному SP правую часть неравенства надо еще домножить на P - число путей.
Соответственно, в виртуальной инфраструктуре VMware vSphere у нас несколько хостов имеют доступ к одному LUN через его SP и получается следующее соотношение:
SQLEN>= ESX1 (Q*L*P) + ESX2 (Q*L*P)+ и т.д.
Теперь рассмотрим 3 оставшиеся типа очередей, которые имеют непосредственное отношение к хосту VMware ESXi:
Как мы видим из картинки - очереди на различных уровнях ограничивают число I/O, которые могут быть одновременно обработаны на различных сущностях:
Длина очереди WQLEN по умолчанию ограничена значением 32, что не позволяет виртуальной машине выполнять более 32-х I/O одновременно.
Длина очереди AQLEN - ограничена значением 1024, чтобы собирать в себя I/O от всех виртуальных машин хоста.
Длина очереди DQLEN - ограничена значением 30 или 32, что не позволяет "выедать" одному хосту ESXi с одного хранилища (LUN) более 30-ти или 32-х операций ввода-вывода
Зачем вообще нужны очереди? Очень просто - очередь это естественный способ ограничить использование общего ресурса. То есть одна виртуальная машина не заполонит своими командами ввода-вывода весь HBA-адаптер, а один хост ESXi не съест всю производительность у одного Datastore (LUN), так как ограничен всего 32-мя I/O к нему.
Мы уже писали о функционале Storage I/O Control (SIOC), который позволяет регулировать последний тип очереди, а именно DQLEN, что позволяет корректно распределить нагрузку на СХД между сервисами в виртуальных машинах в соответствии с их параметрами shares (эта функциональность есть только в издании vSphere Enterprise Plus). Механизм Storage IO Control для хостов VMware ESX включается при превышении порога latency для тома VMFS, определяемого пользователем. Однако, стоит помнить, что механизм SIOC действует лишь в пределах максимально определенного значения очереди, то есть по умолчанию не может выйти за пределы 32 IO на LUN от одного хоста.
Для большинства случаев этого достаточно, однако иногда требуется изменить обозначенные выше длины очередей, чтобы удовлетворить требования задач в ВМ, которые генерируют большую нагрузку на подсистему ввода-вывода. Делается это следующими способами:
1. Настройка длины очереди WQLEN.
Значение по умолчанию - 32. Его задание описано в статье KB 1268. В Advanced Settings хоста ESXi нужно определить следующий параметр:
Disk.SchedNumReqOutstanding (DSNRO)
Он глобально определяет, сколько операций ввода-вывода (IOs) может максимально выдать одна виртуальная машина на LUN одновременно. В то же время, он задает это максимальное значение в IOs для всех виртуальных машин на этот LUN от хоста ESXi (это глобальная для него настройка). То есть, если задано значение 32, то все машины могут одновременно выжать 32 IOs, это подтверждается в случае, где 3 машины генерируют по 32 одновременных IO к одному LUN, а реально к LUN идут все те же 32, а не 3*32.
2. Настройка длины очереди AQLEN.
Как правило, этот параметр менять не требуется, потому что дефолтного значения 1024 хватает практически для всех ситуаций. Где его менять, я не знаю, поэтому если знаете вы - можете написать об этом в комментариях.
3. Настройка длины очереди DQLEN.
Настройка этого параметра описана в KB 1267 (мы тоже про это писали) - она зависит от модели и драйвера HBA-адаптера (в KB информация актуальна на июнь 2010 года). Она взаимосвязана с настройкой Disk.SchedNumReqOutstanding и, согласно рекомендациям VMware, должна быть эквивалентна ей. Если эти значения различаются, то когда несколько ВМ используют с хоста ESXi один LUN - актуальной длиной очереди считается минимальное из этих значений.
Для отслеживания текущих значений очередей можно использовать утилиту esxtop, как описано в KB 1027901.
В конце прошлой недели были выпущены патчи для ESXi (Patch Release ESXi500-201207001), решающие эту проблему. Скачать их можно с портала патчей VMware, выбрав продукт ESXi версии 5.0.0 и дату - 12 июля:
Эти патчи включают в себя обновления подсистемы безопасности, а также множественные исправления ошибок, в том числе, фикс проблем Auto Start и SvMotion / VDS / HA :
Некоторое время назад мы уже писали о возможности конвертации RDM-томов, работающих в режиме виртуальной и физической совместимости, в формат VMDK. Сегодня мы поговорим об обратном преобразовании: из формата VMDK в формат RDM (physical RDM или virtual RDM).
Для начала опробуйте все описанное ниже на тестовой виртуальной машине, а потом уже приступайте к продуктивной. Перед началом конвертации необходимо остановить ВМ, а также сделать remove виртуального диска из списка устройств виртуальной машины. Определите, какой режим совместимости диска RDM вам необходим (pRDM или vRDM), прочитав нашу статью "Типы виртуальных дисков vmdk виртуальных машин на VMware vSphere".
Создайте новый LUN на дисковом массиве, где будет размещаться RDM-том, и сделайте Rescan на хосте ESXi, чтобы увидеть добавленный девайс в vSphere Client:
Обратите внимание на Runtime Name (в данном случае vmhba37:C0:T1:L0) и на идентификатор в скобках (naa.6000eb....итакдалее) - этот идентификатор нам и нужен. Словить его можно, выполнив следующую команду (подробнее об идентификации дисков тут):
# esxcfg-mpath -L
В результатах вывода по Runtime Name можно узнать идентификатор. Вывод будет примерно таким:
vmhba33:C0:T0:L0 state:active naa.6090a038f0cd6e5165a344460000909b vmhba33 0 0 0 NMP active san iqn.1998-01.com.vmware:bs-tse-i137-35c1bf18 00023d000001,iqn.2001-05.com.equallogic:0-8a0906-516ecdf03-9b9000004644a365-bs-lab-vc40,t,1
Соответственно, второе выделенное жирным - идентификатор, его копируем.
Далее выполняем следующую команду для конвертации диска в Virtual RDM:
Далее выберите виртуальную машину в vSphere Client и сделайте Add Disk, где в мастере укажите тип диска RDM и следуйте по шагам мастера для добавления диска. После этого проверьте, что LUN больше не показывается при выборе Add Storage для ESXi в vSphere Client. Запустите виртуальную машину и, если необходимо, в гостевой ОС в оснастке Disk Management сделайте этот диск Online.
Иногда в целях безопасности необходимо настроить время, по прошествии которого если клиент vSphere Client не используется, требуется прервать сессию работы с VMware vCenter. Как подсказывает нам William Lam, сделать это можно двумя способами:
Заданием аргумента при запуске исполняемого файла VpxClient.exe (vSphere Client)
В конфигурационном файле VpxClient.exe.config на рабочей станции, где установлен vSphere Client
В первом случае мы задаем параметр inactivityTimeout в свойствах ярлыка vSphere Client, где устанавливаем время в минутах, после которого при неактивности клиента будет показан диалог о необходимости повторного логина:
Во втором случае нужно найти файл VpxClient.exe.config, который находится в следующих местах в зависимости от версии ОС:
Открываем этот XML-файл и прямо перед окончанием секции cmdlineFallback добавляем следующую секцию:
<inactivityTimeout>X</inactivityTimeout>
Если вы задали значение 1, то после неактивности в течение 1 минуты, будет показано следующее сообщение:
Также Вильям указывает на еще 2 интересных параметра, которые могут быть заданы как на уровне аргументов исполняемого файла клиента, так и в VpxClient.exe.config:
-expAll либо добавление секции <expAll /> - при открытии vSphere Client ваше Inventory хостов и виртуальных машин будет полностью раскрыто
-noPlugins либо добавление секции <noPlugins /> - при запуске клиента все плагины будут отключены
Виктор прислал мне презентацию от того самого Ивана, который на одной из юзер-групп VMware рассматривал особенности дизайна и проектирования виртуальной инфраструктуры VMware vSphere. Часть, касающаяся виртуализации различных типов нагрузок в гостевых ОС виртуальных машин показалась мне очень интересной, поэтому я решил перевести ее и дополнить своими комментариями и ссылками. Итак, что следует учитывать при переносе и развертывании различных приложений в виртуальных машинах на платформе vSphere.
Таги: VMware, vSphere, ESXi, HA, Enterprise, VMachines
Мы уже писали о новом механизме высокой доступности VMware High Availability (HA), который появился в VMware vSphere 5 и работает на базе агентов Fault Domain Manager (FDM). Как известно, вместо primary/secondary узлов в новом HA появились роли узлов - Master (один хост кластера, отслеживает сбои и управляет восстановлением) и Slave (все остальные узлы, подчиняющиеся мастеру и выполняющие его указания в случае сбоя, а также участвующие в выборе нового мастера в случае отказа основного).
В нашей статье об HA было описано основное поведение хостов VMware ESXi и кластера HA в случае различных видов сбоев, но Iwan Rahabok сделал для этих процессов прекрасные блок-схемы, по которым понятно, как все происходит.
Если хост ESXi (Slave) не получил хартбита от Master, которые он ожидает каджую секунду, то он может либо принять участие в выборах, либо сам себя назначить мастером в случае изоляции (кликабельно):
Если хост ESXi (Master) получает heartbeat хотя бы от одного из своих Slave'ов, то он не считает себя изолированным, ну а если не получает от всех, то он изолирован и выполняет Isolation Responce в случае, если нет пинга до шлюза. Работающим в разделенном сегменте сети он себя считает, когда он может пинговать шлюз. Проверка живости хостов (Slaves) производится не только по хартбитам, но и по datastore-хартбитам (кликабельно):
Если у вас в виртуальной инфраструктуре большой набор хранилищ, хостов VMware ESXi и виртуальных машин, то легко не заметить один интересный момент - бесполезные vswp-файлы для виртуальных машин, размещенные в папке с ВМ. Выглядят они как <что-то там>.vswp.<номер чего-то там>:
Как видно из картинки, файлы эти не маленькие - размер vswp равен объему памяти, сконфигурированной для виртуальной машины (vRAM) без Reservation для RAM (если есть reservation, то размер vswp = vRAM - Reservation). Так вот эти файлы с номерами - это ненужный мусор. Образуются они тогда, когда хост ESXi падает в PSOD с запущенными виртуальными машинами.
Эти файлы, понятно дело, надо удалить. Для этого удобнее всего использовать PowerCLI:
dir vmstores:\ -Recurse -Include *.vswp.* | Select Name,Folderpath
На сайте проекта VMware Labs появилась новая интересная утилита Guest Reclaim, позволяющая уменьшить размер "тонкого" (thin provisioned) диска виртуальной машины из гостевой ОС Windows, истребовав нулевые блоки. Напомним, что когда тонкий диск виртуальной машины растет по мере наполнения данными, а потом вы эти данные в самой гостевой системе удаляете, его размер не уменьшается.
Один из способов уменьшить диск машины в VMware vSphere - это использовать утилиту sdelete для очистки блоко и перемещение виртуальной машины на другое хранилище средствами Storage vMotion. Однако, если вы прочтете нашу статью про datamover'ы при Storage vMotion и вспомните, что VMware vSphere 5 использует унифицированные блоки размером 1 МБ для всех хранилищ, то поймете, что этот способ больше не работает, поскольку в датамувере fs3dm не реализована процедура вычищения блоков целевого виртуального диска.
Есть конечно способ отключить fs3dm и, все-таки, уменьшить виртуальный диск машины на ESXi, однако это не очень удобная процедура. Поэтому сотрудники VMware и сделали удобную консольную утилитку Guest Reclaim, которая позволяет уменьшить диск с файловой системой NTFS.
Поддерживаются следующие гостевые ОС:
Windows XP
Windows Vista
Windows 7
Windows Server 2003
Windows Server 2008
Запускать утилиту нужно из гостевой ОС, в которой есть диски, являющиеся тонкими. Чтобы просмотреть список тонких дисков используйте команду:
GuestReclaim.exe -list
Если ничего не найдено - значит первые 16 дисков не являются тонкими или у вас ESXi 5.0 и ниже (читайте дальше). VMware предлагает приступать к уменьшению диска, когда у вас разница между размером VMDK и файлами гостевой ОС хотя бы 1 ГБ, при этом для работы самой утилиты может потребоваться дополнительно 16-100 МБ свободного места. Также перед началом использования утилиты рекомендуется запустить дефрагментацию диска, на которую тоже может потребоваться свободное место (будет расти сам VMDK-файл).
Команда, чтобы уменьшить тонкий VMDK-диск за счет удаления нулевых блоков, выполняемая из гостевой ОС:
guestReclaim.exe --volumefreespace D:\
Еще одно дополнение - утилиту можно использовать и для RDM-дисков.
А теперь главное - утилита работает только в случае, если hypervisor emulation layer представляет гостевой ОС диски как тонкие. В VMware ESXi 5.0, где Virtual Hardware восьмой версии, такой возможности нет, а вот в ESXi 5.1, где уже девятая версия виртуального железа - такая возможность уже есть. Соответственно, использовать утилиту вы можете только, начиная с VMware vSphere 5.1 (бета сейчас уже у всех есть), а пока можно использовать ее только для RDM-дисков.
Из ограничений утилиты Guest Reclaim:
Не работает со связанными клонами (Linked Clones)
Не работает с дисками, имеющими снапшоты
Не работает под Linux
Из дополнительных возможностей:
Поддержка томов Simple FAT/NTFS
Поддержка flat partitions и flat disks для истребования пространства
Работа в виртуальных и физических машинах
FAQ по работе с утилитой доступен по этой ссылке. Скачать утилиту можно тут.
Как известно, виртуализация требует дополнительных ресурсов сверх тех, которые потребляет непосредственно виртуальная машина. Это называют накладными расходами на виртуализацию (так называемый virtualization overhead). Оверхэд есть как для процессора (примерно 3-5 процентов на хост-сервере), так и для оперативной памяти.
При этом для оперативной памяти накладные расходы гипервизора зависят от количества виртуальных процессоров (vCPU) и объема оперативной памяти, выделенных виртуальной машине. Мы уже писали о накладных расходах по RAM для виртуальных машин в VMware vSphere 4, где использовались следующие средние значения:
В VMware vSphere 5 есть новая возможность, которая называется VMX Swap. При включении виртуальной машины гипервизор ESXi создает для нее vmx-процесс, управляющий различными структурами данных, под которые требуется физическая оперативная память. Ее объем, как было сказано, зависит от конфигурации ВМ - количества vCPU и RAM. Для снижения потребления этой памяти в ESXi 5.0 механизм VMX Swap создает swap-файл для сегментов данных процесса vmx, куда сбрасываются страницы памяти, но только в случае нехватки физической оперативной памяти на хосте.
VMX Swap создает файлы подкачки в директории с виртуальной машиной, через который и происходит загрузка и выгрузка страниц процесса vmx. Размещение этих файлов можно переопределить, добавив следующий параметр в расширенные настройки виртуальной машины:
sched.swap.vmxSwapDir
По умолчанию механизм VMX Swap включен и в критических ситуациях позволяет уменьшить overhead типичной виртуальной машины с 50 МБ до 10 МБ. Для виртуализации серверов такие порядки цифр может и не очень важны, зато для виртуализации настольных ПК (например, VMware View), где на одном сервере могут находиться десятки и даже сотни виртуальных машин, эта возможность может оказаться весьма кстати в условиях нехватки вычислительных ресурсов.
Если вы считаете, что ресурсов у вас достаточно и VMX Swap вам не нужен, можно его отключить, добавив значение FALSE в следующу расширенную настройку виртуальной машины:
sched.swap.vmxSwapEnabled
Ну а теперь посмотрим сколько оверхэда по памяти потребляет виртуальная машина уже в VMware vSphere 5 с включенным по умолчанию VMX Swap:
Эта информация уже из vSphere 5 Documentation Center. Как мы видим из таблицы, накладные расходы по памяти с учетом VMX Swap уже значительно меньше (в некоторых случаях до 8-9 раз). Как уверяют коллеги из VMware, в условиях недостатка ресурсов VMX Swap почти не влияет на производительность хост-сервера ESXi, ну а в условиях достатка - не влияет совсем.
На сайте Фрэнка Деннемана появилась отличная статья про механизмы "горячей" миграции хранилищ (Storage vMotion) и "горячей" миграции виртуальных машин (vMotion) в контексте их использования для одного хранилища (Datastore) или хоста ESXi в VMware vSphere. Мы просто не можем не перевести ее, так как она представляет большой интерес для понимания работы этих механизмов.
Начнем со Storage vMotion. Данная операция, очевидно, требует большой нагрузки как на хранилище, откуда и куда, переносятся виртуальные машины, так и на сам хост-сервер VMware ESXi. Особенно актуально это, когда хост или хранилище переходят в Maintenance Mode, и виртуальные машины массово начинают миграцию. В случае со Storage vMotion это создает колоссальную нагрузку на хранилище по вводу-выводу.
Для понимания затрат ресурсов на эти процессы Фрэнк вводит понятие "цены" (cost) начинающейся операции, которая не может превосходить количество доступных слотов на хосте или хранилище, выделенных под них. Наглядно это можно представить так:
Resource Max Cost - это максимальный объем в неких единицах (назовем их слотами), который находится в рамках пула доступных ресурсов для операции Storage vMotion. Для хоста ESXi емкость такого пула составляет 8 слотов, а цена операции Storage vMotion - 4 слота. Таким образом, на одном хосте ESXi могут одновременно выполняться не более 2-х операций Storage vMotion. Если выполняется одна операция - то занято 4 слота и 4 слота свободно (как для исходного, так и для целевого хранилища).
С хранилищем точно такая же система - но у него 128 слотов. Одна операция Storage vMotion для Datastore потребляет 16 слотов. Таким образом, на одном хранилище может выполняться 8 (128 / 16) одновременных операций Storage vMotion. Их могут инициировать, например, 4 хоста (по 2 операции максимально каждый). То есть, мы получаем следующую схему:
Все просто и понятно. Отметим здесь, что операция vMotion тоже потребляет ресурсы с Datastore - но всего 1 слот. Таким образом, на одном Datastore могут, например, выполняться 7 одновременных миграций Storage vMotion (7 * 16 = 112 слотов) и еще 16 миграций vMotion (112+16 = 128), задействующих ВМ этого Datastore.
Если вы не хотите, чтобы при переводе Datastore в Maintenance Mode на нем возникало сразу 8 одновременных миграций Storage vMotion и, как следствие, большой нагрузки, вы можете уменьшить пул слотов для хранилищ (для всех, а не для какого-то конкретно). Для этого нужно отредактировать конфигурационный файл vpxd.cfg на сервере VMware vCenter, который находится в папке:
Вбив значение 112, вы уменьшите максимальное число одновременных миграций Storage vMotion на Datastore до 7. На хосте ESXi менять размер пула слотов для Storage vMotion не рекомендуется (хотя такие секции можно добавить - это пробовали энтузиасты).
Про стоимость миграций vMotion для хостов ESX / ESXi 4.1 мы уже писали вот тут. На эту тему есть также статья KB 2001417. С тех пор в vMotion много чего изменилось, поэтому подтвердить актуальность для vSphere 5 пока не могу. Буду признателен, если вы напишете об этом в комментариях.
Иногда интересно в целях аудита посмотреть, какие команды были выполнены на хосте VMware ESXi 5.0, а что интереснее - кто именно их выполнял. Для этого на хосте ESXi есть специальный лог-файл, хранящий введенные команды:
/var/log/shell.log
В этот лог на хосте можно также заглянуть и через веб-браузер по адресу: https://ESXiHostnameOrIP/host/shell.log
Посмотрим его содержимое:
Отлично - историю команд мы получили, но кто из пользователей их выполнял? Для этого нам понадобится запомнить число в квадратных скобках после слова "shell" - это так называемый World ID для сессии (например, 2938482). Обратите также внимание на присутствующий для каждой команды timestamp.
Далее нам понадобиться открыть следующий лог-файл, хранящий данные об аутентификации пользователей:
/var/log/auth.log
В этот лог на хосте можно также заглянуть и через веб-браузер по адресу: https://ESXiHostnameOrIP/host/auth.log
Там мы найдем такие строчки, если использовался прямой логин в ESXi Shell:
2011-08-29T18:01:00Z login[2938482]: root login on 'char/tty/1'
Если использовался логин по SSH в интерактивном режиме, мы увидим вот такое:
2011-08-29T18:01:00Z sshd[12345]: Connection from 10.11.12.13 port 2605
2011-08-29T18:01:00Z sshd[12345]: Accepted keyboard-interactive/pam for root from10.11.12.13 port 2605 ssh2
2011-08-29T18:01:00Z sshd[2938482]: Session opened for 'root' on /dev/char/pty/t0
2011-08-29T18:01:00Z sshd[12345]: Session closed for 'root' on /dev/char/pty/t0
...
2011-08-29T18:35:05Z sshd[12345]: Session closed for 'root' 2
Если использовался логин по SSH с использованием публичного ключа, то мы увидим следующее:
2011-08-29T18:01:00Z sshd[12345]: Connection from 10.11.12.13 port 2605
2011-08-29T18:01:00Z sshd[12345]: Accepted publickey for root from 10.11.12.13 port 2605ssh2
2011-08-29T18:01:00Z sshd[2938482]: Session opened for 'root' on /dev/char/pty/t0
2011-08-29T18:01:00Z sshd[12345]: Session closed for 'root' on /dev/char/pty/t0
...
2011-08-29T18:35:05Z sshd[12345]: Session closed for 'root' 2
Теперь, я думаю понятно, что World ID сессии, который мы нашли для пользователя открывшего сессию с ESXi Shell и который указан в квадратных скобках строчек лога auth.log - тот же самый, что и в логе shell.log. Таким образом, в логе shell можно всегда понимать, кто и когда выполнял данные команды, зная World ID сессии пользователя из auth.log и timestamp.
Как мы уже писали в одной из статей, в VMware vSphere 5 при работе виртуальных машин с хранилищами могут возникать 2 похожих по признакам ситуации:
APD (All Paths Down) - когда хост-сервер ESXi не может получить доступа к устройству ни по одному из путей, а также устройство не дает кодов ответа на SCSI-команды. При этом хост не знает, в течение какого времени будет сохраняться такая ситуация. Типичный пример - отказ FC-коммутаторов в фабрике или выход из строя устройства хранения. В этом случае хост ESXi будет периодически пытаться обратиться к устройству (команды чтения параметров диска) через демон hostd и восстановить пути. В этом случае демон hostd будет постоянно блокироваться, что будет негативно влиять на производительность. Этот статус считается временным, так как устройство хранения или фабрика могут снова начать работать, и работа с устройством возобновится.
В логе /var/log/vmkernel.log ситуация APD выглядит подобным образом:
2011-07-30T14:47:41.187Z cpu1:2049)WARNING: NMP: nmp_IssueCommandToDevice:2954:I/O could not be issued to device "naa.60a98000572d54724a34642d71325763" due to Not found
2011-07-30T14:47:41.187Z cpu1:2049)WARNING: NMP: nmp_DeviceRetryCommand:133:Device "naa.60a98000572d54724a34642d71325763": awaiting fast path state update for failover with I/O blocked. No prior reservation exists on the device.
2011-07-30T14:47:41.187Z cpu1:2049)WARNING: NMP: nmp_DeviceStartLoop:721:NMP Device "naa.60a98000572d54724a34642d71325763" is blocked. Not starting I/O from device.
2011-07-30T14:47:41.361Z cpu1:2642)WARNING: NMP: nmpDeviceAttemptFailover:599:Retry world failover device "naa.60a98000572d54724a34642d71325763" - issuing command 0x4124007ba7c0
2011-07-30T14:47:41.361Z cpu1:2642)WARNING: NMP: nmpDeviceAttemptFailover:658:Retry world failover device "naa.60a98000572d54724a34642d71325763" - failed to issue command due to Not found (APD), try again...
2011-07-30T14:47:41.361Z cpu1:2642)WARNING: NMP: nmpDeviceAttemptFailover:708:Logical device "naa.60a98000572d54724a34642d71325763": awaiting fast path state update...
2011-07-30T14:47:42.361Z cpu0:2642)WARNING: NMP: nmpDeviceAttemptFailover:599:Retry world failover device "naa.60a98000572d54724a34642d71325763" - issuing command 0x4124007ba7c0
2011-07-30T14:47:42.361Z cpu0:2642)WARNING: NMP: nmpDeviceAttemptFailover:658:Retry world failover device "naa.60a98000572d54724a34642d71325763" - failed to issue command due to Not found (APD), try again...
2011-07-30T14:47:42.361Z cpu0:2642)WARNING: NMP: nmpDeviceAttemptFailover:708:Logical device "naa.60a98000572d54724a34642d71325763": awaiting fast path state update...
Ключевые слова здесь: retry, awaiting. Когда вы перезапустите management agents, то получите такую вот ошибку:
Not all VMFS volumes were updated; the error encountered was 'No connection'.
Errors:
Rescan complete, however some dead paths were not removed because they were in use by the system. Please use the 'storage core device world list' command to see the VMkernel worlds still using these paths.
Error while scanning interfaces, unable to continue. Error was Not all VMFS volumes were updated; the error encountered was 'No connection'.
В этом случае надо искать проблему в фабрике SAN или на массиве.
PDL (Permanent Device Loss) - когда хост-серверу ESXi удается понять, что устройство не только недоступно по всем имеющимся путям, но и удалено совсем, либо сломалось. Определяется это, в частности, по коду ответа для SCSI-команд, например, вот такому: 5h / ASC=25h / ASCQ=0 (ILLEGAL REQUEST / LOGICAL UNIT NOT SUPPORTED) - то есть такого устройства на массиве больше нет (понятно, что в случае APD по причине свича мы такого ответа не получим). Этот статус считается постоянным, так как массив ответил, что устройства больше нет.
А вообще есть вот такая табличка для SCSI sense codes, которые вызывают PDL:
В случае статуса PDL гипервизор в ответ на запрос I/O от виртуальной машины выдает ответ VMK_PERM_DEV_LOSS и не блокирует демон hostd, что, соответственно, не влияет на производительность. Отметим, что как в случае APD, так и в случае PDL, виртуальная машина не знает, что там произошло с хранилищем, и продолжает пытаться выполнять команды ввода-вывода.
Такое разделение статусов в vSphere 5 позволило решить множество проблем, например, в случае PDL хост-серверу больше не нужно постоянно пытаться восстановить пути, а пользователь может удалить сломавшееся устройство с помощью операций detach и unmount в интерфейсе vSphere Client (в случае так называемого "Unplanned PDL"):
В логе /var/log/vmkernel.log ситуация PDL (в случае Unplanned PDL) выглядит подобным образом:
2011-08-09T10:43:26.857Z cpu2:853571)VMW_SATP_ALUA: satp_alua_issueCommandOnPath:661: Path "vmhba3:C0:T0:L0" (PERM LOSS) command 0xa3 failed with status Device is permanently unavailable. H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0.
2011-08-09T10:43:26.857Z cpu2:853571)VMW_SATP_ALUA: satp_alua_issueCommandOnPath:661: Path "vmhba4:C0:T0:L0" (PERM LOSS) command 0xa3 failed with status Device is permanently unavailable. H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0.
2011-08-09T10:43:26.857Z cpu2:853571)WARNING: vmw_psp_rr: psp_rrSelectPathToActivate:972:Could not select path for device "naa.60a98000572d54724a34642d71325763".
2011-08-09T10:43:26.857Z cpu2:853571)WARNING: ScsiDevice: 1223: Device :naa.60a98000572d54724a34642d71325763 has been removed or is permanently inaccessible.
2011-08-09T10:43:26.857Z cpu3:2132)ScsiDeviceIO: 2288: Cmd(0x4124403c1fc0) 0x9e, CmdSN 0xec86 to dev "naa.60a98000572d54724a34642d71325763" failed H:0x8 D:0x0 P:0x0
2011-08-09T10:43:26.858Z cpu3:2132)WARNING: NMP: nmp_DeviceStartLoop:721:NMP Device "naa.60a98000572d54724a34642d71325763" is blocked. Not starting I/O from device.
2011-08-09T10:43:26.858Z cpu2:2127)ScsiDeviceIO: 2316: Cmd(0x4124403c1fc0) 0x25, CmdSN 0xecab to dev "naa.60a98000572d54724a34642d71325763" failed H:0x1 D:0x0 P:0x0 Possible sense data: 0x5 0x25 0x0.
2011-08-09T10:43:26.858Z cpu2:854568)WARNING: ScsiDeviceIO: 7330: READ CAPACITY on device "naa.60a98000572d54724a34642d71325763" from Plugin "NMP" failed. I/O error
2011-08-09T10:43:26.858Z cpu2:854568)ScsiDevice: 1238: Permanently inaccessible device :naa.60a98000572d54724a34642d71325763 has no more open connections. It is now safe to unmount datastores (if any) and delete the device.
2011-08-09T10:43:26.859Z cpu3:854577)WARNING: NMP: nmpDeviceAttemptFailover:562:Retry world restore device "naa.60a98000572d54724a34642d71325763" - no more commands to retry
Ключевое слово здесь - permanently.
Становится понятно, что в случае, когда устройство хранения (LUN) реально сломалось или удалено сознательно, лучше всего избежать ситуации APD и попасть в статус PDL. Сделать это удается хост-серверу ESXi не всегда - по прежнему в vSphere 5.0 Update 1 это обрабатывается в ограниченном количестве случаев, но в vSphere 5.1 обещают существенно доработать этот механизм.
Также есть Advanced Settings на хосте ESXi, которые позволяют управлять дальнейшей судьбой машины, которая оказалась жертвой ситуации PDL. В частности есть 2 следующие расширенные настройки (начиная с vSphere 5.0 Update 1) - первая в категории "Disk", а вторая в расширенных настройках кластера HA:
disk.terminateVMonPDLDefault - если эта настройка включена (True), то в ситуации PDL для устройства, где находится ВМ, эта машина будет выключена. Настройка задается на уровне хоста ESXi и требует его перезагрузки для ее применения.
das.maskCleanShutdownEnabled - это настройка, будучи включенной (True), позволяет механизму VMware HA приступить к восстановлению виртуальной машины. Соответственно, если она выключена, то HA проигнорирует выключение виртуальной машины в случае ее "убийства" при включенной первой настройке.
Рекомендуется, чтобы обе эти настройки были включены.
Все описанные выше механизмы могут очень пригодиться при построении и обработке сбоев в "растянутых кластерах" VMware HA, построенных между географически разнесенными датацентрами. Об этом всем детально написано в документе "VMware vSphere Metro Storage Cluster Case Study".
Таги: VMware, vSphere, Storage, Performance, Troubleshooting, HA, ESXi
Не все знают, что в качестве распределенного коммутатора с расширенной функциональностью для инфраструктуры VMware vSphere существует не только устройство Cisco Nexus 1000V. Есть также и виртуальное устройство от IBM, которое называется System Networking Distributed Switch 5000V (DVS 5000V).
Это тоже программный распределенный коммутатор, который поставляется в виде 2 компонентов:
Host Module (он же Data Path Module, DPM) - модуль, поставляемый в zip-формате (Offline Bundle) для хостов VMware ESXi 5.x, позволяющий контролировать состояние виртуальных коммутаторов в пределах хоста.
Controller - виртуальный модуль (Virtual Appliance) в формате OVA, позволяющий централизованно управлять сетевой инфраструктурой виртуализации через хостовые модули.
vDS от IBM так же, как и Nexus 1000V, интегрирован с VMware vCenter и отображается как обычный Distributed Virtual Switch в интерфейсе vSphere Client. При этом он обладает следующими расширенными возможностями:
Поддержка технологии Private VLAN для разделения трафика ВМ
Поддержка списков контроля доступа (ACL) для контроля трафика ВМ
Поддержка технологий зеркалирования портов (Port Mirroring): локально (SPAN) и удаленной (ERSPAN)
Поддержка техники мониторинга трафика sFlow (похожа на NetFlow)
Управление трафиком и статистика на базе стандарта IEEE 802.1Qbg (Edge Virtual Bridging, EVB)
Поддержка технологий Static Port Aggregation и
Dynamic Port Aggregation
Поддержка логирования Syslog и по SNMP
С точки зрения управления таким распределенным коммутатором DVS 5000V оно построено на базе операционной системы IBM NOS (Network Operating System) и предоставляет следующие интерфейсы:
Мы уже писали о новых возможностях VMware View 5.1 и, в частности, о технологии Storage Accelerator, которая использует кэш CBRC на чтение на стороне хоста VMware ESXi, чтобы быстрее отдавать блоки виртуальной машине напрямую из памяти, не обращаясь к хранилищу.
Как понятно из названия (Content Based Read Cache), технология Storage Accelerator позволяет оптимизировать ввод-вывод именно тогда, когда в среде виртуальных ПК у нас много операций чтения, которые происходят для множества связанных клонов, развертываемых из реплики View Compser. Таких показательных ситуаций две: Boot Storm (когда пользователи приходят на работу и одновременно включают свои ПК для доступа к своим виртуальным машинам) и Antivirus Storm (когда антивирус начинает шерстить файлы в гостевой ОС).
Интересные картинки по тестированию данной технологии обнаружились в одном из тестов Login VSI, которая проверила, как это работает на хосте со 143-мя связанными клонами виртуальных ПК для размера кэша CBRC размером в 2 ГБ. Работает это замечательно:
Как мы видим, к сотой минуте нагрузка улеглась и операции чтения стали уже не такими однородными. Для постоянных (persistent) дисков (т.е. тех, которые не развертываются из единого базового образа) технология CBRC тоже дает свои плоды:
Ну и здорово помогает нам View Storage Accelerator при антивирусном шторме, когда антивирусники большого количества виртуальных машин одновременно набрасываются на файлы гостевых ОС:
Ну и под конец напомним, что в качестве антивирусных решений в VDI-средах для оптимизации нагрузки нужно использовать решения с поддержкой VMsafe.
Для обладателей устройств iPad или iPhone и, по совместительству, разработчиков сценариев для автоматизации операций в виртуальной инфраструктуре VMware vSphere на App Store есть замечательное справочное руководство по скриптам PowerCLI - vPowerCLI5 Reference.
Справочник включает в себя более 200 командлетов PowerCLI, которые упорядочены в алфавитном порядке, также есть поиск. Для каждого командлета предоставляется описание, взятое из vSphere PowerCLI Reference от VMware.
Мы уже недавно писали о метриках производительности хранилищ в среде VMware vSphere, которые можно получить с помощью команды esxtop. Сегодня мы продолжим развивать эту тему и поговорим об общей производительности дисковых устройств и сайзинге нагрузок виртуальных машин по хранилищам в виртуальной среде.
Как говорит нам вторая статья блога VMware о хранилищах, есть несколько причин, по которым может падать производительность подсистемы ввода-вывода виртуальных машин:
Неправильный сайзинг хранилищ для задач ВМ, вследствие чего хранилища не выдерживают такого количества операций, и все начинает тормозить. Это самый частый случай.
Перегрузка очереди ввода-вывода со стороны хост-сервера.
Достижение предела полосы пропускания между хостом и хранилищем.
Высокая загрузка CPU хост-сервера.
Проблемы с драйверами хранилищ на уровне гостевой ОС.
Некорректно настроенные приложения.
Из всего этого набора причин самой актуальной оказывается, как правило, первая. Это происходит вследствие того, что администраторы очень часто делают сайзинг хранилищ для задач в ВМ, учитывая их требования только к занимаемому пространству, но не учитывая реальных требований систем к вводу выводу. Это верно в Enterprise-среде, когда у вас есть хранилища вроде HDS VSP с практически "несъедаемой" производительностью, но неверно для Low и Midrange массивов в небольших организациях.
Поэтому профилирование нагрузки по хранилищам - одна из основных задач администраторов VMware vSphere. Здесь VMware предлагает описывать модель нагрузки прикладной системы следующими параметрами:
Размер запроса ввода-вывода (I/O Size)
Процент обращений на чтение (Read)
Процент случайных обращений (Random)
Таким образом профиль приложения для "типичной" нагрузки может выглядеть наподобие:
8KB I/O size, 80% Random, 80% Read
Само собой, для каждого приложения типа Exchange или СУБД может быть свой профиль нагрузки, отличающийся от типичного. Размер запроса ввода-вывода (I/O Size) также зависит от специфики приложения, и о том, как регулировать его максимальное значение на уровне гипервизора ESXi, рассказано в KB 1008205. Нужно просто в Advanced Settings выставить значение Disk.DiskMaxIOSize (значение в килобайтах). Некоторые массивы испытывают проблемы с производительностью, когда размер запроса ввода-вывода очень велик, поэтому здесь нужно обратиться к документации производителя массива. Если с помощью указанной настройки ограничить размер запроса ввода-вывода, то они будут разбиваться на маленькие подзапросы, что может привести к увеличению производительности подсистемы ввода-вывода на некоторых системах хранения. По умолчанию установлено максимальное значение в 32 МБ, что является достаточно большим (некоторые массивы начинают испытывать проблемы при запросах более 128 KB, 256 KB или 512KB, в зависимости от модели и конфигурации).
Однако вернемся к профилированию нагрузок по хранилищам в VMware vSphere. В одной из презентаций VMware есть замечательная картинка, отражающая численные характеристики производительности дисковых устройств в пересчете на шпиндель в зависимости от типа их организации в RAID-массивы:
Параметры в верхней части приведены для операций 100%-й последовательной записи для дисков на 15К оборотов. А в нижней части приведены параметры производительности для описанной выше "типичной" нагрузки, включая среднюю скорость чтения-записи, число операций ввода-вывода в секунду (IOPS) и среднюю задержку. Хорошая напоминалка, между прочим.
Теперь как анализировать нагрузку по вводу выводу. Для этого у VMware на сайте проекта VMware Labs есть специальная утилита I/O Analyzer, про которую мы уже писали вот тут. Она может многое из того, что потребуется для профилирования нагрузок по хранилищам.
Ну а дальше стандартные процедуры - балансировка нагрузки по путям, сторадж-процессорам (SP) и дисковым устройствам. Сигналом к изысканиям должен послужить счетчик Device Latency (DAVG) в esxtop, если его значение превышает 20-30 мс для виртуальной машины.